/*
本章节来编程九九乘法表

九九乘法表：
1×1=1
2×1=2  2×2=4
3×1=3  3×2=6  3×3=9
4×1=4  4×2=8  4×3=12  4×4=16
5×1=5  5×2=10  5×3=15  5×4=20  5×5=25
6×1=6  6×2=12  6×3=18  6×4=24  6×5=30  6×6=36
7×1=7  7×2=14  7×3=21  7×4=28  7×5=35  7×6=42  7×7=49
8×1=8  8×2=16  8×3=24  8×4=32  8×5=40  8×6=48  8×7=56  8×8=64
9×1=9  9×2=18  9×3=27  9×4=36  9×5=45  9×6=54  9×7=63  9×8=72  9×9=81

可以看到九九乘法表是又两个维度的，非常符合嵌套for循环的代码逻辑，外部的for循环控制行数，内部的for循环控制列数
第n行就需要输出n次乘法：
n=1的时候，i=1、j=1；
n=2的时候，i=2、j从1开始递增到i；
n=3的时候，i=3、j从1开始递增到i；

*/

#include <iostream>
#include <iomanip> // 用于设置输出宽度

int main()
{
    std::cout << "九九乘法表" << std::endl;
    int i,j,k;
    // 外部的循环控制行数，每行从1开始一直到9结束
    for(i=1; i<=9; i++)
    {
        // 当i=1的时候，j为1，乘法应该只执行一次
        // 当i=2的时候，j从1开始到2，乘法循环也应该执行两次才对
        for(j=1; j<=i; j++)
        {
            k=i*j;
            //std::cout << i << "*" << j << "=" << k << std::endl;
            // setw(8) 保证每个乘法式有足够空间，使列对齐
            std::cout << j << "*" << i << "=" << k << std::setw(8);
        }
        // 每行结束后换行
        std::cout << std::endl;
    }
}


/*
// 外部的循环控制行数，每行从1开始一直到9结束
for(int i=1; i<=9; i++)
{
    for(int j=1; j<=i; j++)
    {
        k=i*j;
        //std::cout << i << "*" << j << "=" << k << std::endl;
        // setw(8) 保证每个乘法式有足够空间，使列对齐
        std::cout << j << "*" << i << "=" << k << std::setw(8);
    }

程序总是从上往下执行的，所以基本的流程就是当i=1,这个时候进入内部for循环，此时j=1，然后j<=i，之后执行k=i*j，之后退出循环
这里的i++和j++只有在对应的循环体结束之后才会执行相应的操作
之后内部的for循环结束了，此时j++,j=2,然后进入到外部的for循环，此时外部的for循环一轮也结束了，此时i++,i=2
*/